#ifndef DATA_OBSTACLE_H
#define DATA_OBSTACLE_H

#include <string>
#include "Common/Algebra/Transform.h"
#include "Data/Objects/Model.h"

namespace data {

	class Obstacle {
	public:
		Obstacle(
			std::string id,
			const cmn::Transform& position,
			std::string modelFileName ) :
			m_id( id ),
			m_position( position ),
			m_modelFileName( modelFileName )
		{}

		Obstacle( const Obstacle& obstacle ) :
			m_id( obstacle.GetId() ),
			m_position( obstacle.GetPosition() ),
			m_modelFileName( obstacle.GetModelFileName() )
		{}

		inline const std::string GetId() const { return m_id; }
		inline void SetId( std::string id ) { m_id = id; }

		inline cmn::Transform GetPosition() const { return m_position; }
		inline void SetPosition( const cmn::Transform& position ) { m_position = position; }

		inline const std::string GetModelFileName() const { return m_modelFileName; }
		inline void SetModelFileName( std::string modelFileName ) { m_modelFileName = modelFileName; }

	private:
		std::string m_id;
		cmn::Transform m_position;
		std::string m_modelFileName;
	};

	inline bool operator == ( const Obstacle& a, const Obstacle& b ) {
		if( a.GetId() != b.GetId() ) return false;
		if( a.GetPosition() != b.GetPosition() ) return false;
		if( a.GetModelFileName() != b.GetModelFileName() ) return false;
		return true;
	}

	inline bool operator != ( const Obstacle& a, const Obstacle& b ) {
		return !( a == b );
	}
}

#endif

